Задана последовательность из n действительных чисел. Найдите сумму
всех ее элементов.
Вход. В первой
строке задано число n (n ≤ 100). Во второй строке
записано n действительных чисел,
каждое из которых по модулю не превышает 100.
Выход. Выведите сумму
всех элементов последовательности с одним десятичным знаком.
Пример входа |
Пример выхода |
5 1.2 1.3 5.7 1.8 12.4 |
22.4 |
циклы
Находим сумму
чисел при помощи цикла.
Реализация алгоритма
Объявим рабочий массив.
double m[100];
Читаем входные данные.
scanf("%d",&n);
for (i = 0; i < n; i++)
scanf("%lf",&m[i]);
В переменной s
находим сумму всех чисел массива m.
s = 0;
for
(i = 0; i < n; i++)
s = s + m[i];
Выводим искомую сумму.
printf("%.1lf\n",s);
Реализация алгоритма – цикл
Читаем количество чисел n.
scanf("%d",&n);
В переменной s
находим сумму n чисел.
s = 0;
for (i = 0; i < n; i++)
{
scanf("%lf",&x);
s = s + x;
}
Выводим ответ.
printf("%.1lf\n",s);
Реализация алгоритма – вектор
Для хранения входного массива объявим вектор m.
vector<double> m;
Читаем входные данные.
scanf("%d", &n);
m.resize(n);
for (i = 0; i < n; i++)
scanf("%lf", &m[i]);
В переменной s
находим сумму всех чисел массива m.
s = 0;
for (i = 0; i < n; i++)
s = s + m[i];
Выводим ответ.
printf("%.1lf\n", s);
Реализация алгоритма – accumulate
Для хранения входного массива объявим вектор v.
vector<double> v;
Читаем входные данные.
scanf("%d", &n);
v.resize(n);
for (i = 0; i < n; i++)
scanf("%lf", &v[i]);
Cумму чисел
массива v вычислим
при помощи функции accumulate.
s = accumulate(v.begin(),
v.end(), 0.0);
Выводим ответ.
printf("%.1lf\n", s);
Реализация алгоритма – динамическое выделение памяти, malloc
#include <stdio.h>
#include <malloc.h>
int i, n;
double s, *m;
int main(void)
{
scanf("%d", &n);
m = (double *)malloc(n * sizeof(double));
for (i = 0; i <
n; i++) // read array
scanf("%lf", &m[i]);
s = 0; // find the sum
of array elements
for (i = 0; i <
n; i++)
s = s + m[i];
free(m);
printf("%.1lf\n", s); // print the
answer
return 0;
}
Реализация алгоритма – динамическое выделение памяти, calloc
#include <stdio.h>
#include <malloc.h>
int i, n;
double s, *m;
int main(void)
{
scanf("%d", &n);
m = (double *)calloc(n, sizeof(double));
for (i = 0; i <
n; i++) // read array
scanf("%lf", &m[i]);
s = 0; // find the sum
of array elements
for (i = 0; i <
n; i++)
s = s + m[i];
free(m);
printf("%.1lf\n", s); // print the
answer
return 0;
}
Реализация алгоритма – динамическое выделение памяти, new
#include <stdio.h>
int i, n;
double s;
double *m;
int main(void)
{
scanf("%d",&n);
// allocate memory
for array
m = new double[n];
// read array
for(i = 0; i
< n; i++)
scanf("%lf",m+i);
// m + i = &m[i]
// find the sum of
array elements
s = 0;
for(i = 0; i
< n; i++)
s = s + m[i];
// print the answer
printf("%.1lf\n",s);
// deallocate the
array memory
delete[] m;
return 0;
}
Реализация алгоритма – использование файлов
При работе с файлами в системе e-olymp используются:
input.txt – входной файл;
output.txt – выходной файл;
При отправке решений с файлами следует выбрать опцию “Решение использует
файлы для чтения и записи”.
#include <stdio.h>
int i, n;
double s, m[100];
int main(void)
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d",&n);
// read array
for(i = 0; i < n; i++)
scanf("%lf",&m[i]);
// find the sum of array elements
s = 0;
for(i = 0; i < n; i++)
s = s + m[i];
// print the answer
printf("%.1lf\n",s);
return 0;
}
Java
реализация
public class
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
con.useLocale(Locale.US);
int n = con.nextInt();
double sum = 0;
for (int i = 0; i < n; i++)
{
double val = con.nextDouble();
sum += val;
}
System.out.printf("%.1f",sum);
con.close();
}
}
Java реализация – собственный класс
import java.util.*;
class Array
{
private double[] m;
private int size;
public Array(int n)
{
size = n;
m = new double[n];
}
public void
set(int i, double value)
{
m[i] = value;
}
public double getSum()
{
double s = 0;
for(int i = 0; i < size; i++)
s = s + m[i];
return s;
}
}
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
con.useLocale(Locale.US);
int n = con.nextInt();
Array a = new Array(n);
for (int i = 0; i < n; i++)
a.set(i,con.nextDouble());
System.out.printf("%.1f",a.getSum());
con.close();
}
}
Python
реализация
Читаем входные данные.
n = int(input())
m = list(map(float,input().split()))
Вычисляем и выводим ответ.
print(sum(m))